/*
 * GameState.h
 *
 *  Created on: 03/05/2011
 *      Author: DessaVida
 */

#ifndef GAMESTATE_H_
#define GAMESTATE_H_

#include <utils.hpp>
#include "core/Game.h"

/**
 * \class GameState
 * \note abstract
 */
class GameState {
public:
	GameState() {}
	virtual ~GameState() {}
	virtual void onInit(Game *game, Utilities *utils) = 0;
	virtual void onKeyDown(Game *game, Utilities *utils, int key) = 0;
	virtual void onKeyUp(Game *game, Utilities *utils, int key) = 0;
	virtual void onEnter(Game *game, Utilities *utils) = 0;
	virtual void onExecute(Game *game, Utilities *utils) = 0;
	virtual void onExit(Game *game, Utilities *utils) = 0;
	virtual void onQuit(Game *game, Utilities *utils) = 0;
	virtual void onRender(Game *game, Utilities *utils) = 0;

};

#endif /* GAMESTATE_H_ */
